Voir le code pour croiser, préparer et nettoyer les données
Communes
# Charger les données depuis les fichiers CSV
df_siret <- read_csv2("data/siret.csv")
df_datagouv <- read_csv2("data/datagouv.csv")
# Fusionner les données sur l'identifiant 'siret'
result <- left_join(df_siret, df_datagouv, by = "siret")
# Corriger les codes postaux et codes insee
format_code <- function(code) {
ifelse(!is.na(suppressWarnings(as.numeric(code))), sprintf("%05d", as.integer(code)), code)
}
result$`Code postal de l'établissement` <- sapply(result$`Code postal de l'établissement`, format_code)
result$`Code commune de l'établissement` <- sapply(result$`Code commune de l'établissement`, format_code)
# Filtrer les données pour garder seulement 'Commune et commune nouvelle'
filtered_result <- result %>%
filter(`Nature juridique de l'unité légale` == "Commune et commune nouvelle")
# Séparer les communes non doublonées (une seule occurence de code insee)
communes_simples <- filtered_result %>%
group_by(`Code commune de l'établissement`) %>%
filter(n() == 1) %>%
ungroup()
# Filtrer les communes en doublons en ne gardant que celles qui publient sur data.gouv.fr (metric.dataset >= 1)
communes_multiples_cleaned <- filtered_result %>%
group_by(`Code commune de l'établissement`) %>%
filter(n() > 1 & metric.datasets >= 1) %>%
ungroup()
# Réintégration des communes non doublonées
result_final <- bind_rows(communes_simples, communes_multiples_cleaned)
# Sauvegarder le résultat dans un nouveau fichier CSV
write_csv(result_final, "data/enriched_siret.csv")
# Affichage du nombre de lignes après nettoyage
print(paste("Nombre de lignes après nettoyage :", nrow(result_final)))
## [1] "Nombre de lignes après nettoyage : 33012"
# Ajout des données population communale
donnees_communes <- read_csv2("data/donnees_communes.csv") %>%
select(COM, PTOT)
communes <- left_join(result_final, donnees_communes, by = c("Code commune de l'établissement" = "COM"))
communes <- communes %>%
rename(code_epci = `Code EPCI de l'établissement`)
# Sauvegarde du CSV
write_csv(communes, "data/communes.csv")
library(readr)
library(ggplot2)
library(dplyr)
# Charger le fichier de données
data <- read_csv("data/communes+siret+metrics+pop.csv")
# Nettoyage
data <- data %>%
rename(
unite_legale = `Dénomination de l'unité légale`,
PTOT = PTOT,
metric.datasets = metric.datasets
)
# 50 communes les plus peuplées
top_50_communes <- data %>%
arrange(desc(PTOT)) %>%
slice_head(n = 50)
# Visualisation
ggplot(top_50_communes, aes(x = reorder(unite_legale, PTOT), y = metric.datasets)) +
geom_bar(stat = "identity", fill = "steelblue") +
coord_flip() +
theme_minimal() +
labs(
title = "Nombre de datasets des 50 communes les plus peuplées",
x = "Commune",
y = "datasets"
) +
theme(
axis.text.y = element_text(size = 4),
plot.title = element_text(hjust = 0.5)
)

Récupération des EPCI
Traitements des données EPCI (attribution de l’EPCI pour chaque
commune à partir du code EPCI et du SIRET, présent dans le même ensemble
de données)
Voir le code
library(dplyr)
# Filtrer les données EPCI et supprimer les doublons
epci <- result %>%
filter(`Nature juridique de l'unité légale` %in% c(
"Communauté de communes",
"Communauté d'agglomération",
"Métropole",
"Communauté urbaine"
)) %>%
rename(code_epci = `Code EPCI de l'établissement`) %>%
distinct(code_epci, .keep_all = TRUE) %>%
mutate(code_epci = trimws(as.character(code_epci)))
# Traitement et nettoyage
communes <- communes %>%
mutate(code_epci = as.character(code_epci))
epci <- epci %>%
mutate(code_epci = as.character(code_epci))
communes <- communes %>%
mutate(code_epci = trimws(code_epci))
epci <- epci %>%
mutate(code_epci = trimws(code_epci))
communes <- communes %>%
filter(!is.na(code_epci))
# Jonction EPCI et communes
communes_epci <- communes %>%
left_join(
epci %>% select(code_epci, metric.datasets, metric.datasets.epci = metric.datasets),
by = "code_epci"
)
# Ajout des informations EPCI
communes_epci <- communes_epci %>%
mutate(
epci_present = ifelse(!is.na(metric.datasets) & metric.datasets > 0, "oui", "non"),
epci_datasets = ifelse(epci_present == "oui", metric.datasets, NA)
) %>%
select(-metric.datasets)
write_csv(communes_epci, "data/communes_epci_brut.csv")
# Charge les données de géolocalisation
geoloc_data <- read_csv2("data/geoloc.csv", show_col_types = FALSE)
geoloc_data <- geoloc_data %>%
rename(siret = `SIRET du siège de l'unité légale`)
geoloc_data <- geoloc_data %>%
distinct(siret, .keep_all = TRUE)
# Ajout des données de géolocalisation
communes_epci_geoloc <- communes_epci %>%
left_join(geoloc_data %>% select(siret, `Géolocalisation de l'établissement`), by = "siret")
write_csv(communes_epci_geoloc, "data/communes_epci_geoloc.csv")
Communes par région
Voir le code
# Librairies
library(dplyr)
library(ggplot2)
library(ggrepel)
library(scales)
library(plotly)
# Chargement et traitement des données
data <- read.csv("data/00-communes.csv")
data_clean <- data %>%
filter(!is.na(region))
region_summary <- data_clean %>%
group_by(region) %>%
summarise(
total_communes = n(),
communes_with_datasets = sum(!is.na(datsets_commune) & datsets_commune >= 1, na.rm = TRUE)
) %>%
mutate(percentage_with_datasets = (communes_with_datasets / total_communes) * 100) %>%
arrange(desc(percentage_with_datasets))
# Histogramme
ggplot(region_summary, aes(x = reorder(region, percentage_with_datasets), y = percentage_with_datasets)) +
geom_bar(stat = "identity", fill = "steelblue") +
coord_flip() +
labs(
title = "Part des communes publiant au moins un jeu de données",
x = "Région",
y = "% des communes"
) +
theme_minimal()

# Tableau
region_summary %>%
arrange(desc(percentage_with_datasets)) %>%
knitr::kable(col.names = c("Région", "Total Communes", "Communes avec jeux de données", "Pourcentage (%)"))
| La Réunion |
19 |
3 |
15.7894737 |
| Provence-Alpes-Côte d’Azur |
886 |
53 |
5.9819413 |
| Martinique |
34 |
2 |
5.8823529 |
| Guyane |
19 |
1 |
5.2631579 |
| Île-de-France |
1186 |
59 |
4.9747049 |
| Guadeloupe |
27 |
1 |
3.7037037 |
| Pays de la Loire |
1060 |
35 |
3.3018868 |
| Bretagne |
1086 |
30 |
2.7624309 |
| Auvergne-Rhône-Alpes |
3789 |
55 |
1.4515703 |
| Nouvelle-Aquitaine |
4067 |
49 |
1.2048193 |
| Centre-Val de Loire |
1667 |
17 |
1.0197960 |
| Hauts-de-France |
3650 |
32 |
0.8767123 |
| Corse |
355 |
3 |
0.8450704 |
| Normandie |
2411 |
16 |
0.6636251 |
| Bourgogne-Franche-Comté |
3529 |
20 |
0.5667328 |
| Occitanie |
4301 |
21 |
0.4882585 |
| Grand Est |
4807 |
21 |
0.4368629 |
|
2 |
0 |
0.0000000 |
| Mayotte |
17 |
0 |
0.0000000 |
# Traitement des données pour obtenir le nombre total de jeux de données par région
region_summary_datasets <- data %>%
filter(!is.na(region)) %>%
group_by(region) %>%
summarise(
total_datasets = sum(datsets_commune, na.rm = TRUE)
) %>%
arrange(desc(total_datasets))
# Créer l'histogramme basé sur le nombre total de jeux de données par région
ggplot(region_summary_datasets, aes(x = reorder(region, total_datasets), y = total_datasets)) +
geom_bar(stat = "identity", fill = "steelblue") +
coord_flip() +
labs(
title = "Total des jeux de données par région",
x = "Région",
y = "Nombre total de jeux de données"
) +
theme_minimal()

# Population ajoutée
region_summary_ptot <- data %>%
filter(!is.na(region) & !is.na(ptot)) %>%
group_by(region) %>%
summarise(
total_population = sum(ptot, na.rm = TRUE),
population_with_datasets = sum(ptot[datsets_commune >= 1], na.rm = TRUE),
total_datasets = sum(datsets_commune, na.rm = TRUE)
) %>%
mutate(population_coverage_ratio = population_with_datasets / total_population)
p <- ggplot(region_summary_ptot, aes(x = total_population, y = total_datasets, text = region, color = population_coverage_ratio)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE, color = "black") +
scale_color_gradient(low = "lightblue", high = "darkblue", name = "Population couverte (%)") +
labs(
title = "Population et nombre total de jeux de données par région",
x = "Population totale (en millions)",
y = "Nombre total de jeux de données"
) +
theme_minimal()
interactive_plot <- ggplotly(p, tooltip = c("text", "population_coverage_ratio"))
interactive_plot
Communes par département
Voir le code
# Librairies
library(dplyr)
library(ggplot2)
library(ggrepel)
library(scales)
library(plotly)
# Chargement et traitement des données
data <- read.csv("data/00-communes.csv")
data_clean <- data %>%
filter(!is.na(departement))
departement_summary <- data_clean %>%
group_by(departement) %>%
summarise(
total_communes = n(),
communes_with_datasets = sum(!is.na(datsets_commune) & datsets_commune >= 1, na.rm = TRUE)
) %>%
mutate(percentage_with_datasets = (communes_with_datasets / total_communes) * 100) %>%
arrange(desc(percentage_with_datasets))
library(knitr)
library(kableExtra)
# Styled and scrollable table
departement_summary %>%
arrange(desc(percentage_with_datasets)) %>%
kable(col.names = c("Département", "Total Communes", "Communes avec jeux de données", "Pourcentage (%)")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
scroll_box(width = "90%", height = "400px")
|
Département
|
Total Communes
|
Communes avec jeux de données
|
Pourcentage (%)
|
|
Hauts-de-Seine
|
35
|
15
|
42.8571429
|
|
|
3
|
1
|
33.3333333
|
|
Seine-Saint-Denis
|
35
|
6
|
17.1428571
|
|
La Réunion
|
19
|
3
|
15.7894737
|
|
Hautes-Alpes
|
145
|
21
|
14.4827586
|
|
Val-de-Marne
|
39
|
5
|
12.8205128
|
|
Maine-et-Loire
|
140
|
12
|
8.5714286
|
|
Var
|
134
|
10
|
7.4626866
|
|
Bouches-du-Rhône
|
110
|
7
|
6.3636364
|
|
Martinique
|
34
|
2
|
5.8823529
|
|
Vendée
|
205
|
12
|
5.8536585
|
|
Guyane
|
19
|
1
|
5.2631579
|
|
Alpes-Maritimes
|
157
|
8
|
5.0955414
|
|
Ille-et-Vilaine
|
294
|
14
|
4.7619048
|
|
Morbihan
|
225
|
9
|
4.0000000
|
|
Isère
|
478
|
19
|
3.9748954
|
|
Loire-Atlantique
|
179
|
7
|
3.9106145
|
|
Guadeloupe
|
27
|
1
|
3.7037037
|
|
Val-d’Oise
|
171
|
6
|
3.5087719
|
|
Rhône
|
247
|
8
|
3.2388664
|
|
Yvelines
|
247
|
8
|
3.2388664
|
|
Charente-Maritime
|
438
|
14
|
3.1963470
|
|
Nord
|
612
|
18
|
2.9411765
|
|
Essonne
|
180
|
5
|
2.7777778
|
|
Vaucluse
|
147
|
4
|
2.7210884
|
|
Seine-et-Marne
|
478
|
13
|
2.7196653
|
|
Corse-du-Sud
|
122
|
3
|
2.4590164
|
|
Vienne
|
252
|
6
|
2.3809524
|
|
Haute-Savoie
|
263
|
6
|
2.2813688
|
|
Ain
|
363
|
8
|
2.2038567
|
|
Indre
|
233
|
5
|
2.1459227
|
|
Savoie
|
250
|
5
|
2.0000000
|
|
Hérault
|
326
|
6
|
1.8404908
|
|
Finistère
|
247
|
4
|
1.6194332
|
|
Gironde
|
508
|
8
|
1.5748031
|
|
Alpes-de-Haute-Provence
|
193
|
3
|
1.5544041
|
|
Deux-Sèvres
|
219
|
3
|
1.3698630
|
|
Landes
|
315
|
4
|
1.2698413
|
|
Oise
|
650
|
8
|
1.2307692
|
|
Loir-et-Cher
|
251
|
3
|
1.1952191
|
|
Seine-Maritime
|
678
|
8
|
1.1799410
|
|
Indre-et-Loire
|
258
|
3
|
1.1627907
|
|
Aveyron
|
271
|
3
|
1.1070111
|
|
Haute-Vienne
|
186
|
2
|
1.0752688
|
|
Vosges
|
487
|
5
|
1.0266940
|
|
Loire
|
308
|
3
|
0.9740260
|
|
Lot-et-Garonne
|
308
|
3
|
0.9740260
|
|
Doubs
|
516
|
5
|
0.9689922
|
|
Côtes-d’Armor
|
320
|
3
|
0.9375000
|
|
Sarthe
|
324
|
3
|
0.9259259
|
|
Côte-d’Or
|
676
|
6
|
0.8875740
|
|
Manche
|
380
|
3
|
0.7894737
|
|
Pyrénées-Atlantiques
|
528
|
4
|
0.7575758
|
|
Haute-Marne
|
406
|
3
|
0.7389163
|
|
Cher
|
272
|
2
|
0.7352941
|
|
Meurthe-et-Moselle
|
559
|
4
|
0.7155635
|
|
Haute-Garonne
|
572
|
4
|
0.6993007
|
|
Nièvre
|
303
|
2
|
0.6600660
|
|
Dordogne
|
466
|
3
|
0.6437768
|
|
Loiret
|
314
|
2
|
0.6369427
|
|
Bas-Rhin
|
473
|
3
|
0.6342495
|
|
Ardèche
|
316
|
2
|
0.6329114
|
|
Haut-Rhin
|
321
|
2
|
0.6230530
|
|
Charente
|
331
|
2
|
0.6042296
|
|
Gard
|
336
|
2
|
0.5952381
|
|
Eure-et-Loir
|
339
|
2
|
0.5899705
|
|
Drôme
|
345
|
2
|
0.5797101
|
|
Eure
|
538
|
3
|
0.5576208
|
|
Saône-et-Loire
|
548
|
3
|
0.5474453
|
|
Mayenne
|
212
|
1
|
0.4716981
|
|
Aude
|
425
|
2
|
0.4705882
|
|
Gers
|
453
|
2
|
0.4415011
|
|
Calvados
|
464
|
2
|
0.4310345
|
|
Meuse
|
486
|
2
|
0.4115226
|
|
Aisne
|
779
|
3
|
0.3851091
|
|
Haute-Saône
|
529
|
2
|
0.3780718
|
|
Pas-de-Calais
|
856
|
3
|
0.3504673
|
|
Tarn
|
305
|
1
|
0.3278689
|
|
Allier
|
308
|
1
|
0.3246753
|
|
Ariège
|
317
|
1
|
0.3154574
|
|
Moselle
|
666
|
2
|
0.3003003
|
|
Yonne
|
406
|
1
|
0.2463054
|
|
Puy-de-Dôme
|
440
|
1
|
0.2272727
|
|
Jura
|
455
|
1
|
0.2197802
|
|
Ardennes
|
429
|
0
|
0.0000000
|
|
Aube
|
410
|
0
|
0.0000000
|
|
Cantal
|
236
|
0
|
0.0000000
|
|
Corrèze
|
267
|
0
|
0.0000000
|
|
Creuse
|
249
|
0
|
0.0000000
|
|
Haute-Corse
|
233
|
0
|
0.0000000
|
|
Haute-Loire
|
235
|
0
|
0.0000000
|
|
Hautes-Pyrénées
|
458
|
0
|
0.0000000
|
|
Lot
|
297
|
0
|
0.0000000
|
|
Lozère
|
133
|
0
|
0.0000000
|
|
Marne
|
570
|
0
|
0.0000000
|
|
Mayotte
|
17
|
0
|
0.0000000
|
|
Orne
|
351
|
0
|
0.0000000
|
|
Pyrénées-Orientales
|
216
|
0
|
0.0000000
|
|
Somme
|
753
|
0
|
0.0000000
|
|
Tarn-et-Garonne
|
192
|
0
|
0.0000000
|
|
Territoire de Belfort
|
96
|
0
|
0.0000000
|
Voir le code
# Nombre total de jeux de données par département
departement_summary_datasets <- data %>%
filter(!is.na(departement)) %>%
group_by(departement) %>%
summarise(
total_datasets = sum(datsets_commune, na.rm = TRUE)
) %>%
arrange(desc(total_datasets))
# Traitement des données pour obtenir le nombre total de jeux de données par département et la population totale
departement_summary_ptot <- data %>%
filter(!is.na(region) & !is.na(ptot) & !is.na(departement)) %>%
group_by(region, departement) %>%
summarise(
total_population = sum(ptot, na.rm = TRUE),
total_datasets = sum(datsets_commune, na.rm = TRUE)
)
# Nuage de points
departement_summary_ptot <- data %>%
filter(!is.na(region) & !is.na(ptot) & !is.na(departement)) %>%
group_by(region, departement) %>%
summarise(
total_population = sum(ptot, na.rm = TRUE),
population_with_datasets = sum(ptot[datsets_commune >= 1], na.rm = TRUE),
total_datasets = sum(datsets_commune, na.rm = TRUE)
) %>%
mutate(population_coverage_ratio = population_with_datasets / total_population)
p <- ggplot(departement_summary_ptot, aes(x = total_population, y = total_datasets, text = departement, color = population_coverage_ratio)) +
geom_point(size = 2) +
geom_smooth(method = "lm", se = FALSE, color = "black") +
scale_color_gradient(low = "lightblue", high = "darkblue", name = "Population couverte") +
labs(
title = "Population couverte et jeux de données par département",
x = "Population (en millions)",
y = "Nombre de jeux de données"
) +
theme_minimal()
interactive_plot <- ggplotly(p, tooltip = c("text", "population_coverage_ratio"))
interactive_plot
EPCI
Voir le code
# Libraries
library(dplyr)
library(readr)
# Charger les données
data <- read_csv("data/00-communes.csv")
# Création d'une table EPCI
epci_summary <- data %>%
filter(!is.na(libelle_epci)) %>%
group_by(libelle_epci) %>%
summarise(
nom_epci = first(libelle_epci),
datasets_epci = max(datasets_epci, na.rm = TRUE),
total_datasets_communes = sum(datsets_commune, na.rm = TRUE),
communes_publiant = sum(datsets_commune >= 1, na.rm = TRUE),
total_communes = n(),
part_communes_publiant = 100 * (communes_publiant / total_communes),
pop_couverte = 100 * (sum(ptot[datsets_commune >= 1], na.rm = TRUE) / sum(ptot, na.rm = TRUE)),
pop_totale_epci = sum(ptot, na.rm = TRUE),
pop_communes_publiant = sum(ptot[datsets_commune >= 1], na.rm = TRUE)
)
write_csv(epci_summary, "data/epci_summary.csv")
# Libraries
library(dplyr)
library(plotly)
library(knitr)
library(kableExtra)
# Filtre sur les 100 EPCI les plus peuplés
epci_top_100 <- epci_summary %>%
arrange(desc(pop_totale_epci)) %>%
slice_head(n = 100)
max_size <- max(sqrt(epci_top_100$total_datasets_communes))
sizeref <- 2.0 * max_size / 30
# Nuage de points
plot <- plot_ly(
epci_top_100,
x = ~pop_totale_epci,
y = ~pop_communes_publiant,
size = ~total_datasets_communes,
color = ~part_communes_publiant,
colors = colorRamp(c("lightblue", "darkblue")),
type = 'scatter',
mode = 'markers',
marker = list(
sizemode = 'diameter',
opacity = 0.7,
sizeref = sizeref,
sizemin = 2
),
text = ~paste(nom_epci, "<br>Pop totale EPCI:", pop_totale_epci,
"<br>Pop communes publiant:", pop_communes_publiant,
"<br>Part communes publiant:", round(part_communes_publiant, 2), "%")
) %>%
layout(
title = "Population des communes publiant par EPCI",
xaxis = list(
title = "Population totale EPCI",
type = "log",
tickvals = c(100000, 1000000),
ticktext = c("100K", "1M")
),
yaxis = list(
title = "Population des communes publiant",
type = "log",
tickvals = c(100000, 1000000),
ticktext = c("100K", "1M")
),
legend = list(x = 1, y = 0.5, bgcolor = 'rgba(255,255,255,0)', bordercolor = 'rgba(0,0,0,0)'),
margin = list(l = 50, r = 50, b = 50, t = 50),
hovermode = "closest"
)
plot
# Colorisation conditionnelle
custom_color_scale <- function(values, median_val) {
sapply(values, function(x) {
if (x >= median_val * 1.1) {
"#a8e6a1"
} else if (x >= median_val * 0.9 && x < median_val * 1.1) {
"#f4f19d"
} else if (x >= median_val * 0.7 && x < median_val * 0.9) {
"#f9c89e"
} else {
"#f8a3a3"
}
})
}
# Filtre des 100 EPCI les plus peuplés
epci_top_100 <- epci_summary %>%
arrange(desc(pop_totale_epci)) %>%
slice_head(n = 100) %>%
mutate(
part_communes_publiant = round(part_communes_publiant, 2),
pop_couverte = round(pop_couverte, 2)
)
# Valeurs médianes pour la mise en forme conditionnelle
median_part_communes_publiant <- median(epci_top_100$part_communes_publiant, na.rm = TRUE)
median_pop_couverte <- median(epci_top_100$pop_couverte, na.rm = TRUE)
# Tableau avec mise en forme conditionnelle
epci_top_100 %>%
kable(format = "html") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
row_spec(0, bold = TRUE) %>%
column_spec(6, background = custom_color_scale(epci_top_100$part_communes_publiant, median_part_communes_publiant)) %>%
column_spec(7, background = custom_color_scale(epci_top_100$pop_couverte, median_pop_couverte)) %>%
scroll_box(width = "100%", height = "400px")
|
libelle_epci
|
nom_epci
|
datasets_epci
|
total_datasets_communes
|
communes_publiant
|
total_communes
|
part_communes_publiant
|
pop_couverte
|
pop_totale_epci
|
pop_communes_publiant
|
|
Métropole du Grand Paris
|
Métropole du Grand Paris
|
-Inf
|
675
|
12
|
81
|
14.81
|
51.99
|
4928173
|
2561934
|
|
Métropole d’Aix-Marseille-Provence
|
Métropole d’Aix-Marseille-Provence
|
80
|
86
|
8
|
85
|
9.41
|
63.55
|
1792439
|
1139057
|
|
Métropole de Lyon
|
Métropole de Lyon
|
610
|
11
|
3
|
55
|
5.45
|
10.64
|
1330811
|
141550
|
|
Métropole Européenne de Lille
|
Métropole Européenne de Lille
|
338
|
264
|
13
|
87
|
14.94
|
55.80
|
1067660
|
595763
|
|
Nantes Métropole
|
Nantes Métropole
|
212
|
247
|
1
|
19
|
5.26
|
53.15
|
617428
|
328144
|
|
Paris Ouest La Défense
|
Paris Ouest La Défense
|
-Inf
|
117
|
4
|
10
|
40.00
|
49.01
|
539509
|
264421
|
|
Boucle Nord de Seine
|
Boucle Nord de Seine
|
-Inf
|
52
|
2
|
8
|
25.00
|
40.59
|
487847
|
198026
|
|
Eurométropole de Strasbourg
|
Eurométropole de Strasbourg
|
25
|
1
|
1
|
29
|
3.45
|
0.74
|
477517
|
3512
|
|
Bordeaux Métropole
|
Bordeaux Métropole
|
322
|
0
|
0
|
24
|
0.00
|
0.00
|
455944
|
0
|
|
Grenoble-Alpes-Métropole
|
Grenoble-Alpes-Métropole
|
-Inf
|
126
|
9
|
45
|
20.00
|
65.15
|
418482
|
272637
|
|
Saint-Etienne Métropole
|
Saint-Etienne Métropole
|
6
|
7
|
2
|
51
|
3.92
|
47.68
|
402228
|
191796
|
|
Rennes Métropole
|
Rennes Métropole
|
-Inf
|
40
|
1
|
35
|
2.86
|
57.60
|
397871
|
229178
|
|
Métropole Toulon-Provence-Méditerranée
|
Métropole Toulon-Provence-Méditerranée
|
-Inf
|
3
|
2
|
9
|
22.22
|
52.45
|
368245
|
193151
|
|
CU Grand Paris Seine et Oise
|
CU Grand Paris Seine et Oise
|
-Inf
|
16
|
3
|
69
|
4.35
|
4.06
|
362775
|
14743
|
|
Métropole Rouen Normandie
|
Métropole Rouen Normandie
|
-Inf
|
6
|
2
|
60
|
3.33
|
36.04
|
345447
|
124502
|
|
Vallée Sud - Grand Paris
|
Vallée Sud - Grand Paris
|
-Inf
|
2
|
2
|
9
|
22.22
|
29.27
|
345245
|
101059
|
|
Grand Paris Seine Ouest
|
Grand Paris Seine Ouest
|
140
|
398
|
8
|
8
|
100.00
|
100.00
|
321543
|
321543
|
|
Toulouse Métropole
|
Toulouse Métropole
|
-Inf
|
1
|
1
|
34
|
2.94
|
1.56
|
306883
|
4786
|
|
CA Grand Paris Sud Seine Essonne Sénart
|
CA Grand Paris Sud Seine Essonne Sénart
|
-Inf
|
34
|
2
|
18
|
11.11
|
45.23
|
294116
|
133034
|
|
CA Roissy Pays de France
|
CA Roissy Pays de France
|
-Inf
|
12
|
3
|
37
|
8.11
|
28.38
|
293301
|
83241
|
|
CA Communauté Paris-Saclay
|
CA Communauté Paris-Saclay
|
-Inf
|
16
|
1
|
24
|
4.17
|
7.25
|
286304
|
20750
|
|
CU Le Havre Seine Métropole
|
CU Le Havre Seine Métropole
|
-Inf
|
91
|
2
|
52
|
3.85
|
65.36
|
267969
|
175142
|
|
CA Val Parisis
|
CA Val Parisis
|
-Inf
|
1
|
1
|
14
|
7.14
|
11.11
|
262905
|
29205
|
|
CA de Nîmes Métropole
|
CA de Nîmes Métropole
|
-Inf
|
1
|
1
|
37
|
2.70
|
0.92
|
257004
|
2355
|
|
CA du Pays Basque
|
CA du Pays Basque
|
-Inf
|
116
|
2
|
149
|
1.34
|
18.62
|
251241
|
46779
|
|
CU Caen la Mer
|
CU Caen la Mer
|
-Inf
|
13
|
1
|
39
|
2.56
|
44.00
|
250805
|
110357
|
|
Tours Métropole Val de Loire
|
Tours Métropole Val de Loire
|
-Inf
|
79
|
1
|
18
|
5.56
|
56.45
|
248223
|
140116
|
|
CA Saint Germain Boucles de Seine
|
CA Saint Germain Boucles de Seine
|
0
|
2
|
2
|
15
|
13.33
|
33.78
|
242011
|
81752
|
|
Metz Métropole
|
Metz Métropole
|
-Inf
|
0
|
0
|
41
|
0.00
|
0.00
|
225988
|
0
|
|
Métropole Nice Côte d’Azur
|
Métropole Nice Côte d’Azur
|
-Inf
|
5
|
4
|
48
|
8.33
|
31.60
|
212284
|
67074
|
|
CU Limoges Métropole
|
CU Limoges Métropole
|
-Inf
|
1
|
1
|
20
|
5.00
|
62.77
|
209926
|
131770
|
|
Brest Métropole
|
Brest Métropole
|
359
|
0
|
0
|
7
|
0.00
|
0.00
|
209616
|
0
|
|
CA Lorient Agglomération
|
CA Lorient Agglomération
|
-Inf
|
31
|
2
|
23
|
8.70
|
40.04
|
206925
|
82847
|
|
CA de Béthune-Bruay, Artois-Lys Romane
|
CA de Béthune-Bruay, Artois-Lys Romane
|
-Inf
|
0
|
0
|
90
|
0.00
|
0.00
|
206365
|
0
|
|
CA de Cergy-Pontoise
|
CA de Cergy-Pontoise
|
-Inf
|
5
|
1
|
12
|
8.33
|
34.37
|
200109
|
68778
|
|
CA de Lens - Liévin
|
CA de Lens - Liévin
|
2
|
8
|
1
|
32
|
3.12
|
4.16
|
194783
|
8107
|
|
CA Valenciennes Métropole
|
CA Valenciennes Métropole
|
-Inf
|
0
|
0
|
34
|
0.00
|
0.00
|
191664
|
0
|
|
Montpellier Méditerranée Métropole
|
Montpellier Méditerranée Métropole
|
10
|
1
|
1
|
29
|
3.45
|
6.75
|
191084
|
12890
|
|
CA du Grand Annecy
|
CA du Grand Annecy
|
-Inf
|
8
|
1
|
29
|
3.45
|
70.95
|
189916
|
134738
|
|
CU du Grand Poitiers
|
CU du Grand Poitiers
|
-Inf
|
5
|
2
|
37
|
5.41
|
6.15
|
189774
|
11673
|
|
CA Valence Romans Agglo
|
CA Valence Romans Agglo
|
-Inf
|
1
|
1
|
50
|
2.00
|
11.11
|
181049
|
20120
|
|
CA de Sophia Antipolis
|
CA de Sophia Antipolis
|
8
|
169
|
2
|
23
|
8.70
|
51.46
|
180999
|
93142
|
|
CA Intercommunale du Nord de la Réunion (CINOR)
|
CA Intercommunale du Nord de la Réunion (CINOR)
|
-Inf
|
69
|
1
|
2
|
50.00
|
86.43
|
180820
|
156282
|
|
CU Grand Besançon Métropole
|
CU Grand Besançon Métropole
|
1
|
26
|
2
|
55
|
3.64
|
67.85
|
180636
|
122553
|
|
CA Territoire de la Côte Ouest (TCO)
|
CA Territoire de la Côte Ouest (TCO)
|
0
|
0
|
0
|
3
|
0.00
|
0.00
|
175515
|
0
|
|
CA de La Rochelle
|
CA de La Rochelle
|
42
|
230
|
3
|
26
|
11.54
|
54.79
|
169803
|
93030
|
|
CA Plaine Vallée
|
CA Plaine Vallée
|
-Inf
|
0
|
0
|
17
|
0.00
|
0.00
|
164480
|
0
|
|
CA Cannes Pays de Lérins
|
CA Cannes Pays de Lérins
|
1
|
139
|
2
|
5
|
40.00
|
60.16
|
159274
|
95818
|
|
Orléans Métropole
|
Orléans Métropole
|
228
|
0
|
0
|
20
|
0.00
|
0.00
|
157101
|
0
|
|
CA Golfe du Morbihan - Vannes Agglomération
|
CA Golfe du Morbihan - Vannes Agglomération
|
-Inf
|
13
|
2
|
28
|
7.14
|
9.33
|
155742
|
14524
|
|
CA Val d’Yerres Val de Seine
|
CA Val d’Yerres Val de Seine
|
-Inf
|
0
|
0
|
8
|
0.00
|
0.00
|
154512
|
0
|
|
CA du Centre de la Martinique
|
CA du Centre de la Martinique
|
-Inf
|
7
|
1
|
4
|
25.00
|
49.89
|
151587
|
75627
|
|
CA du Grand Chambéry
|
CA du Grand Chambéry
|
46
|
22
|
1
|
37
|
2.70
|
43.21
|
142111
|
61411
|
|
CA Mulhouse Alsace Agglomération
|
CA Mulhouse Alsace Agglomération
|
-Inf
|
0
|
0
|
33
|
0.00
|
0.00
|
140664
|
0
|
|
CA Paris - Vallée de la Marne
|
CA Paris - Vallée de la Marne
|
-Inf
|
23
|
3
|
8
|
37.50
|
49.44
|
138718
|
68579
|
|
CA de la Porte du Hainaut
|
CA de la Porte du Hainaut
|
-Inf
|
0
|
0
|
42
|
0.00
|
0.00
|
138103
|
0
|
|
CU Perpignan Méditerranée Métropole
|
CU Perpignan Méditerranée Métropole
|
-Inf
|
0
|
0
|
31
|
0.00
|
0.00
|
137390
|
0
|
|
CA du Saint-Quentinois
|
CA du Saint-Quentinois
|
-Inf
|
35
|
2
|
39
|
5.13
|
80.20
|
135072
|
108332
|
|
CA Versailles Grand Parc (CAVGP)
|
CA Versailles Grand Parc (CAVGP)
|
-Inf
|
0
|
0
|
15
|
0.00
|
0.00
|
134705
|
0
|
|
CA Chartres Métropole
|
CA Chartres Métropole
|
-Inf
|
1
|
1
|
60
|
1.67
|
0.44
|
134293
|
585
|
|
CA de Saint-Quentin-en-Yvelines
|
CA de Saint-Quentin-en-Yvelines
|
45
|
0
|
0
|
7
|
0.00
|
0.00
|
134178
|
0
|
|
CA Alès Agglomération
|
CA Alès Agglomération
|
-Inf
|
4
|
1
|
69
|
1.45
|
2.52
|
133257
|
3361
|
|
CA du Grand Angoulême
|
CA du Grand Angoulême
|
-Inf
|
2
|
1
|
35
|
2.86
|
7.83
|
131661
|
10310
|
|
CA Le Grand Narbonne
|
CA Le Grand Narbonne
|
4
|
0
|
0
|
36
|
0.00
|
0.00
|
131547
|
0
|
|
CA Cœur d’Essonne Agglomération
|
CA Cœur d’Essonne Agglomération
|
1
|
0
|
0
|
16
|
0.00
|
0.00
|
129832
|
0
|
|
CA Sète Agglopôle Méditerranée
|
CA Sète Agglopôle Méditerranée
|
-Inf
|
9
|
2
|
13
|
15.38
|
15.98
|
128845
|
20585
|
|
Clermont Auvergne Métropole
|
Clermont Auvergne Métropole
|
-Inf
|
0
|
0
|
18
|
0.00
|
0.00
|
125553
|
0
|
|
CA Pays de Montbéliard Agglomération
|
CA Pays de Montbéliard Agglomération
|
-Inf
|
4
|
1
|
65
|
1.54
|
21.23
|
122957
|
26098
|
|
CA Maubeuge Val de Sambre
|
CA Maubeuge Val de Sambre
|
-Inf
|
1
|
1
|
42
|
2.38
|
24.12
|
121649
|
29344
|
|
CA du Niortais
|
CA du Niortais
|
-Inf
|
26
|
1
|
36
|
2.78
|
50.32
|
121540
|
61158
|
|
Métropole du Grand Nancy
|
Métropole du Grand Nancy
|
0
|
3
|
1
|
15
|
6.67
|
24.87
|
119927
|
29829
|
|
CA de la Région Nazairienne et de l’Estuaire (CARENE)
|
CA de la Région Nazairienne et de l’Estuaire (CARENE)
|
76
|
0
|
0
|
9
|
0.00
|
0.00
|
119802
|
0
|
|
CU Angers Loire Métropole
|
CU Angers Loire Métropole
|
-Inf
|
7
|
4
|
24
|
16.67
|
22.31
|
118648
|
26471
|
|
CA de Béziers-Méditerranée
|
CA de Béziers-Méditerranée
|
2
|
0
|
0
|
15
|
0.00
|
0.00
|
118001
|
0
|
|
CA Agglo du Pays de Dreux
|
CA Agglo du Pays de Dreux
|
-Inf
|
1
|
1
|
81
|
1.23
|
26.68
|
117534
|
31362
|
|
CA de l’Espace Sud de la Martinique
|
CA de l’Espace Sud de la Martinique
|
-Inf
|
0
|
0
|
12
|
0.00
|
0.00
|
116523
|
0
|
|
CA Le Muretain Agglo
|
CA Le Muretain Agglo
|
-Inf
|
0
|
0
|
24
|
0.00
|
0.00
|
116166
|
0
|
|
CA Carcassonne Agglo
|
CA Carcassonne Agglo
|
-Inf
|
0
|
0
|
81
|
0.00
|
0.00
|
114528
|
0
|
|
CA Grand Châtellerault
|
CA Grand Châtellerault
|
-Inf
|
2
|
2
|
45
|
4.44
|
56.96
|
112318
|
63978
|
|
CA Douaisis Agglo
|
CA Douaisis Agglo
|
2
|
2
|
1
|
34
|
2.94
|
6.56
|
110026
|
7222
|
|
CA Dracénie Provence Verdon Agglomération
|
CA Dracénie Provence Verdon Agglomération
|
-Inf
|
2
|
1
|
21
|
4.76
|
37.04
|
109702
|
40638
|
|
CA Intercommunale de la Réunion Est (CIREST)
|
CA Intercommunale de la Réunion Est (CIREST)
|
-Inf
|
0
|
0
|
4
|
0.00
|
0.00
|
108269
|
0
|
|
CA Evreux Portes de Normandie
|
CA Evreux Portes de Normandie
|
-Inf
|
0
|
0
|
70
|
0.00
|
0.00
|
102542
|
0
|
|
CA Laval Agglomération
|
CA Laval Agglomération
|
-Inf
|
0
|
0
|
27
|
0.00
|
0.00
|
102491
|
0
|
|
CA du Pays de Grasse
|
CA du Pays de Grasse
|
-Inf
|
0
|
0
|
23
|
0.00
|
0.00
|
102366
|
0
|
|
CA d’Hénin-Carvin
|
CA d’Hénin-Carvin
|
-Inf
|
0
|
0
|
13
|
0.00
|
0.00
|
101369
|
0
|
|
CA du Beauvaisis
|
CA du Beauvaisis
|
-Inf
|
4
|
2
|
49
|
4.08
|
62.24
|
99130
|
61702
|
|
CA Seine-Eure
|
CA Seine-Eure
|
-Inf
|
7
|
2
|
56
|
3.57
|
24.37
|
98590
|
24028
|
|
CA du Grand Avignon (COGA)
|
CA du Grand Avignon (COGA)
|
17
|
1
|
1
|
14
|
7.14
|
9.05
|
98474
|
8916
|
|
CA du Boulonnais
|
CA du Boulonnais
|
3
|
0
|
0
|
20
|
0.00
|
0.00
|
97686
|
0
|
|
CA Agglomération du Choletais
|
CA Agglomération du Choletais
|
-Inf
|
0
|
0
|
24
|
0.00
|
0.00
|
97549
|
0
|
|
CA Agglomération d’Agen
|
CA Agglomération d’Agen
|
-Inf
|
108
|
3
|
42
|
7.14
|
49.94
|
97411
|
48649
|
|
CA Melun Val de Seine
|
CA Melun Val de Seine
|
-Inf
|
2
|
1
|
16
|
6.25
|
20.90
|
97383
|
20349
|
|
CA du Bassin de Brive
|
CA du Bassin de Brive
|
-Inf
|
0
|
0
|
45
|
0.00
|
0.00
|
97217
|
0
|
|
CA du Pays Nord Martinique
|
CA du Pays Nord Martinique
|
-Inf
|
1
|
1
|
18
|
5.56
|
15.32
|
96806
|
14834
|
|
CA Thonon Agglomération
|
CA Thonon Agglomération
|
10
|
1
|
1
|
25
|
4.00
|
39.83
|
95635
|
38094
|
|
CC Le Grésivaudan
|
CC Le Grésivaudan
|
-Inf
|
1
|
1
|
38
|
2.63
|
3.34
|
95104
|
3180
|
|
CA du Pays de Gex
|
CA du Pays de Gex
|
-Inf
|
1
|
1
|
26
|
3.85
|
14.09
|
95038
|
13391
|
|
CU de Dunkerque
|
CU de Dunkerque
|
-Inf
|
0
|
0
|
14
|
0.00
|
0.00
|
94433
|
0
|
|
CA Quimper Bretagne Occidentale
|
CA Quimper Bretagne Occidentale
|
2
|
1
|
1
|
11
|
9.09
|
70.66
|
93226
|
65875
|